<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Upload Class
 *
 * 파일 업로드 관련
 *
 * @package		CH
 * @subpackage	Libraries
 * @category	Libraries
 * @author		CH Dev Team
 * @link		
 */
class Upload extends CI_Model{
	private $allow_file; //업로드 허용 확장자
	private $allow_size; //업로드 허용 파일사이즈
	private $upload_path;	
	private $temp_file; //업로드 파일
	private $array_result; //업로드 결과 배열
		
	function __construct($param) {		
		$this->allow_file = $param['allow_file'];
		$this->allow_size = $param['allow_size'];
		$this->temp_file = $param['file'];
		$this->upload_path = $this->config->item('ch_upload_root').$param['upload_path'];
		//$this->upload_path = $this->config->item('ch_upload_root');
	}
	
	function getUploadResult(){
		return $this->array_result;
	}
	
	function checkValid(){
		
	}
	
	/**
	 * 폴더생성
	 *
	 * 업로드 대상 폴더 생성
	 *
	 * @access	public
	 * @return	void
	 */
	function mkdir(){
		if(!is_dir($this->upload_path)){
			mkdir($this->upload_path, 0755);
		}	
	}
	
	/**
	 * 유니크 파일
	 *
	 * 유니크 파일명 생성
	 *
	 * @access	public
	 * @return	string
	 */
	function uniqueNaming(){
		$file_name = $_FILES[$this->temp_file]['name'];
		$ext = strtolower(substr($file_name, (strrpos($file_name, '.') + 1)));
		//파일명 변경
		do{
			$file_name = rand(1000000000,9999999999).".$ext";
			$dest_file = "{$this->upload_path}/{$file_name}";
		}while(file_exists($dest_file));
		return $file_name;
	}
	
	/**
	 * 파일삭제
	 *
	 * 파일삭제
	 *
	 * @access	public
	 * @return	void
	 */
	function deleteFile($full_path){
		if($full_path){
			@unlink($full_path);
		}
	}
	
	/**
	 * 파일 업로드
	 *
	 * 파일 업로드
	 *
	 * @access	public
	 * @return	void
	 */
	function fileUpload(){
		$this->mkdir(); //폴더 생성
		//검사
		$real_file = $this->uniqueNaming();
		$orginal_file =  $_FILES[$this->temp_file]['name'];
		if (move_uploaded_file( $_FILES[$this->temp_file]['tmp_name'],"{$this->upload_path}/{$real_file}")){
			$this->array_result = array(
										'result'=>true,
										'real_file'=>$real_file,
										'orginal_file'=>$orginal_file,
										'size'=> $_FILES[$this->temp_file]['size'],
										'type'=> $_FILES[$this->temp_file]['type'],
										'error'=> $_FILES[$this->temp_file]['error']
								  );
		}else{
			$this->array_result = array(
										'result'=>true,
										'real_file'=>null,
										'orginal_file'=>null,
										'size'=> null,
										'type'=> null,
										'error'=> null
								  );
		}
	}
	
	
}
?>